package com.demo.nio;

import java.nio.ByteBuffer;

/**
 * @author gy
 * @date 2022/5/14
 * 只读 buffer
 */
public class ReadOnlyBuffer {
    public static void main(String[] args) {
        // 创建一个 buffer
        ByteBuffer byteBuffer = ByteBuffer.allocate(64);

        for (int i = 0; i < 64; i++) {
            // 在 put的时候 position 的 值 同样一直在增加，发生变化
            byteBuffer.put((byte)i);
        }

        // 读取
        // 此处 要将 position 的值 发生变化
        byteBuffer.flip();

        // 得到一个只读的 buffer
        ByteBuffer readOnlyBuffer = byteBuffer.asReadOnlyBuffer();
        System.out.println(readOnlyBuffer.getClass());

        // 读取
        while (readOnlyBuffer.hasRemaining()) {
            // 在 get的时候 position 的 值 同样也在增加变化
            /*
            final int nextGetIndex() {
             /  / package-private
                if (position >= limit)
                    throw new BufferUnderflowException();
                return position++; ！！
            }
             */
            System.out.println(readOnlyBuffer.get());
        }

        // ReadOnlyBufferException
//        readOnlyBuffer.put((byte)100);
    }
}
